The present invention relates generally to network structures, and more particularly to a network apparatus and method for transmitting voice data from multiple channels in a multiplexed voice data packet.
Network systems typically transmit data from one network location (a source location) to another network location (a destination location) by first placing the data into xe2x80x9cpacketxe2x80x9d form. A packet can include information that allows a data packet to be directed from one network location to another by including certain information, including a xe2x80x9cdestination address,xe2x80x9d that identifies a destination location. Such packet identifying information is typically placed in an initial portion of the packet, often referred to as a xe2x80x9cheader.xe2x80x9d The header will include a number of fields, each of which includes a particular type of packet information. The data carried by the packet is often referred to as a xe2x80x9cpayload.xe2x80x9d The process of generating packets from data is often referred to as xe2x80x9cpacketization.xe2x80x9d In particularly large networks, packet data can be transferred from a source location to a destination location by way of one or more network nodes. A transmission from one node to the next can be referred to as a xe2x80x9chop.xe2x80x9d
One particular type of network data that can be desirable is voice data. One approach to transmitting voice data over a network structure is referred to generally as xe2x80x9cvoice over Internet Protocolxe2x80x9d (xe2x80x9cVoIPxe2x80x9d). Internet Protocol (IP) is one particular protocol for transmitting data over a network structure having devices that recognize the IP protocol. The wide reach of the Internet and wide use of IP in smaller networks makes VoIP an important application. VoIP can enable a local network, such as that shared by a corporation, to carry voice communications between the various users in addition to conventional sharing of data and/or applications.
Because most connections to the Internet are by way of a conventional telephone line or a higher speed connection (an integrated services digital network (ISDN), a xe2x80x9cT-3xe2x80x9d or xe2x80x9cT-1xe2x80x9d trunk line, or one of the many types of digital subscriber lines (xDSL), as just a few examples) the use of VoIP can provide long distance voice communications at considerable cost savings by avoiding the toll charges required by conventional long distance telephone calls. VoIP can prove extremely valuable to the telecommuter, as data and voice can both be transmitted to and from an office, allowing efficient communication between the remote worker and other on-site workers.
Another advantage of VoIP is the ability to transmit the same data packets to multiple destinations. This enables teleconferencing to occur over very large distances, again, without the unwanted expense of a conventional long distance telephone service provider.
Network structures can be xe2x80x9cconnectionless,xe2x80x9d xe2x80x9cconnection oriented,xe2x80x9d or some hybrid thereof. A connectionless structure provides a more flexible and robust network. Data paths between different points can vary according to available network resources. For example, a first data packet may be transmitted from a source location to a destination through a first series of hops, while a second data packet transmitted between the same two points could be transmitted by way of a different number of hops, by way of a separate set of nodes. In this arrangement, if a node becomes disabled, data can still be transmitted between two points. In this way, VoIP is particularly advantageous, as the transmitting structure is more robust.
One disadvantage to conventional approaches that transmit voice data over a connectionless structure is that transmitting too much data from a source location at a given time may result in too much latency (delay) in the voice data.
In contrast, a connection oriented network structure may seek to establish a dedicated path between two network points. Such network approaches include asynchronous transfer mode (ATM) switching and xe2x80x9cIPxe2x80x9d Switching. Such approaches can ensure xe2x80x9cquality of servicexe2x80x9d (QoS) by ensuring sufficient resources exist in the dedicated path to prevent voice data from being unduly delayed. A drawback to connection-oriented network structures is that such approaches are usually more expensive, and can require more complex devices. In addition, setting up the initial dedicated path can introduce a further initial delay. Further, connection-oriented network structures can be more susceptible to failure in the event one or more of the nodes are disabled.
The transmission of voice data over the Internet is also referred to as xe2x80x9cInternet Telephonyxe2x80x9d and can employ systems referred as xe2x80x9cIP Phones.xe2x80x9d It is expected that Internet Telephony will be a very important application for the Internet.
As noted above, a particular concern that arises out the transmission of voice data over a network structure is that of latency (delay). For example, for most data, some delay can be acceptable. Whether or not text and/or images are not immediately viewable may be of less concern than if the text and/or images are corrupted. Accordingly, many transmission protocols are more concerned with reassembling data in the proper order, and less concerned with the overall rate at which the data is transmitted. As just one example, a data file that is broken down into packets that are transmitted in a particular order, may receive the packets in a different order, and subsequently reassemble them in the correct order.
Voice data can be more susceptible to latency effects. As just one example, attempting to have a conversation over a data network can be extremely awkward when undue delay is introduced into the transmission of the voice data. The natural flow of conversation is often interrupted as a delay may be misinterpreted as the end of one person""s conversation. Further, if data is lost, or multiple packets take too long to reassemble, speech can be broken up, with portions of the conversation being dropped.
Another concern in voice data over networks is the xe2x80x9crandomxe2x80x9d or xe2x80x9casynchronousxe2x80x9d nature of voice data. That is, if multiple parties are having multiple conversations, voice data may xe2x80x9cbog downxe2x80x9d a system, as the rate at which voice data is being received can exceed the rate at which a system can transmit the data (exceed the bandwidth of the system). This can be of particular concern when multiple speakers exist on a system that is connected via a high speed line to the Internet, or some other higher level network structure.
Conversely, another concern in voice over data networks can be efficiency. While it is desirable to provide a predetermined latency for voice data, it would be advantageous to take advantage of any extra available network bandwidth.
One approach to voice over data networks is the personal computer (PC) Internet phone or Internet videophone. Such approaches typically involve utilizing the microphone and sound card of a PC in conjunction with proprietary software. The central processing unit (CPU) of the PC, in conjunction with an analog-to-digital converter (typically in the sound card), converts the voice signal into digital form, and then transmits the data in a conventional fashion as a series of packets. A drawback to such approaches is that such systems provide a solution for only one voice data source, and must rely on conventional connectionless and/or connection oriented structures voice the transmission of the voice data. Hence, voice data can be unreliable, expensive, and/or incur unwanted latency.
Another approach to transmitting voice data over a structure can involve providing a conventional voice xe2x80x9cgatewayxe2x80x9d to a larger network structure (such as the Internet). Such a conventional gateway can receive voice data from a number of different channels, and transmit the voice data onto the larger network structure. Such approaches may not be as efficient as desired. For example, the amount of voice data transmitted may be less than or greater than what the network is capable of handling.
One particular format for network data is a xe2x80x9cmultiplexedxe2x80x9d packet. A multiplexed packet payload can include a number of smaller payloads that can be processed differently. A multiplexed packet can thus include a typical header, and then also include a number of smaller multiplexer headers for the smaller payloads.
It would be desirable to provide a system that can transmit multiplexed voice packets according to predetermined latency limits.
It would also be desirable to arrive at some way of transmitting voice data in multiplexed packets that can utilize the available bandwidth of a network in an efficient manner.
It would also be desirable to provide a system that can rapidly store incoming voice data from different locations, and then transmit the various voice data in a multiplexed voice data packet.
It would also be desirable to provide a system that can transmit voice data in multiplexed packet form at various quality or service (QoS) levels.
According to the disclosed embodiments of the present invention, out-going voice packet data, originating from a number of different sources, can be stored in a buffer memory. Voice data can be transmitted from the buffer memory in simplex or multiplexed packet form. Multiplexed voice packet data can be transmitted within a predetermined latency value by transmitting multiplexed voice packet data according to packet size and/or voice data latency values.
According to another aspect of the embodiments, the efficiency of multiplexed voice data transmission can be dynamically adapted to network conditions, such as increased bandwidth or decreased bandwidth.
According to one aspect of the embodiments, voice data for the same multiplexed voice packet can be grouped together (binned) in the buffer memory according to predetermined criteria. One such criterion can include common destination.
According to another aspect of the embodiments, voice data that is to be binned, can be accumulated at various locations within a buffer memory. Voice data that is to be commonly binned can be linked together by a stored location list (linked-list). The linked-list can be used to transmit the binned voice data as a multiplexed voice packet.
According to another aspect of the embodiments, a buffer memory that stores voice channel data for an out-going multiplexed voice packet can include a static random access memory for advantageously fast access to the voice data.
According to another aspect of the embodiments, as voice data is accumulated for a given bin, a bin size is recalculated. The bin size and a data transmit rate (such as a bandwidth) can be used to determine when to transmit binned data to meet a general latency value.
According to another aspect of the embodiments, voice data can be accumulated for multiple bins. The size of multiple bins and a data transmit rate can be used to determine when to transmit bin data, and provide transmit priority to particular bins.
According to another aspect of the embodiments, multiplexed voice data can be transmitted for bin according to a xe2x80x9cdumpxe2x80x9d signal. The dump signal can be generated by using the transmitting speed and current amount of data stored for a bin to generate a transmit latency value. The transmit latency value can reflect the amount of time remaining before the currently stored voice data can be transmitted.
According to another aspect of the embodiments, a transmit latency value is subtracted from a maximum latency value to generate a count value. The count value reflects how much time remains before the stored voice data must be transmitted in order to ensure a maximum latency value for the transmitted voice data.
According to another aspect of the embodiment, a count value may be a value that is initially preset to a predetermined value. A count value may then be changed according to network conditions.
According to another aspect of the embodiments, a count value can be decremented according to the rate at which multiplexed voice data can be transmitted.
According to another aspect of the embodiments, as additional voice data is accumulated for a bin, a new transmit latency value can be generated.
According to another aspect of the embodiments, voice data stored for a bin includes voice data from a number of different sources (channels). When the number of different channels for a bin exceeds a predetermined value, voice data for the bin can be transmitted.
According to another aspect of the embodiments, the current amount of voice data stored for multiple bins can be modified and summed to generate a total latency value. When the total latency value is greater than a count value for a bin, the voice data for the bin can be transmitted.
According to another aspect of the embodiments, voice data bins can be assigned a particular quality of service value. Voice data can be transmitted from a bin to provide the quality of service.
According to another aspect of the embodiments, as transmitting bandwidth decreases, bin size and/or latency values can be decreased.
According to another aspect of the embodiments, as transmitting bandwidth is available, bin size and/or latency values can be increased.
According to another aspect of the embodiments, a bin can have a base bin size and latency value. If transmitting bandwidth is in a nominal range, a current bin size and latency value can be adjusted to approach the base bin size and latency value.
According to another aspect of the embodiments, a bin can have a static size. The contents of the bin can be periodically transmitted according to a synchronous transmission rate.